/**
 * 关联和合并
分三种大情况

无标准数据
          单条数据，直接关联自己， 则单条数据 提升为标准 传参无标准id

          多条数据，如果无标准数据，则 关联时传参同样无标准id

     2.有一个标准数据

        一条标准数据+ 一条或者多条非标准数据  则是  常规 关联 

    3.有多个标准数据

       两条 标准数据 关联 则实际上 就是调用 合并 接口  
       如果存在 多条标准数据 加上 几条 非标准数据这种情况 进行 关联操作，则前端报错，
 */
export default {
  data() {
    return {
      show_associate_success:false,
      show_access_label:false,
      selected_item_pool: [],
      selected_item_pool_id_all: [],
      selected_item_pool_dataSourceCode_all: [],
      selected_item_unstandard_arr: [],
      selected_item_standard_arr: []
    };
  },
  methods: {
    selected_item_pool_rebase() {
      
      this.selected_item_pool = [];
      this.selected_item_pool_id_all = [];
      this.selected_item_pool_dataSourceCode_all = [];
    },
    selected_table_items_change(item) {
      this.show_access_label=false
      /**
       * 这个地方存在 一个问题
       * 历史选择 置顶后 ，若存在于 新请求回来的 数据 自动选中 问题
       */
      console.log(item);
      console.log(this.selected_item_pool);
      console.log(this.selected_item_pool_id_all);
      console.log(this.selected_item_pool_dataSourceCode_all);
      if (item.is_selected) {
        // 勾选
        // 判定 是否存在 同数据来源的数据
        let arr = [];
        // 判断 是否存在 同源 数据
        arr = arr.concat(
          this.selected_item_pool_dataSourceCode_all,
          item.all_related_dataSourceCode
        );
        let len1 = this.$lodash.uniq(arr).length;
        //  console.log(item.all_related_dataSourceCode);

        if (
          len1 ==
          this.selected_item_pool_dataSourceCode_all.length +
            item.all_related_dataSourceCode.length
        ) {
          // 刷新 选中的 数据的  数据源综合
          this.selected_item_pool_dataSourceCode_all = this.selected_item_pool_dataSourceCode_all.concat(
            item.all_related_dataSourceCode
          );
          //  刷新选中的 数据的  id 综合

          this.selected_item_pool_id_all.push(item.id);

          this.scroll_area_height -= 30;
          this.$nextTick(() => {
            this.selected_item_pool.push(item);
          });
        } else {
          // 存在同源数据

          // let message = ` <div style="text-align:center;font-size:15px;margin-top: 20px">当前选择条目和已选择条目中存在同源数据!</div> `;
          let message = ` <div style="text-align:center;font-size:15px;margin-top: 20px">不可同时勾选两条同数据源的数据，请修正后关联!</div> `;
          this.show_alert_dialog(message);
          item.is_selected = false;
        }
      } else {
        //去掉勾选
        // this.$lodash.remove(this.selected_item_pool, function(n) {
        //   return n.id == item.id;
        // });
        let i = this.$lodash.findIndex(this.selected_item_pool, function(n) {
          return n.id == item.id;
        });
        //  this.$lodash.pullAt(this.selected_item_pool,[i])
        this.selected_item_pool.splice(i, 1);
        this.selected_item_pool_id_all.splice(i, 1);

        this.$lodash.pullAll(
          this.selected_item_pool_dataSourceCode_all,
          item.all_related_dataSourceCode
        );
        this.$nextTick(() => {
          this.scroll_area_height += 30;
        });
      }

      console.log(this.selected_item_pool);
      console.log(this.selected_item_pool_id_all);
      console.log(this.selected_item_pool_dataSourceCode_all);
      this.$forceUpdate();
    },

    handle_associate_or_merge_match_pre_confirm() {
      return true;
    },

    handle_associate_or_merge_match() {
      // 操作前确认 前置处理
      let cando = this.handle_associate_or_merge_match_pre_confirm();
      if (!cando) {
        return false;
      }

      // 从条数 和 标准 两个维度来判断
      let len = this.selected_item_pool.length;
      this.selected_item_standard_arr = [];
      this.selected_item_unstandard_arr = [];

      if (len == 1) {
        // 存在 单条非标准数据 提升  情况  
        //经产品 确认 页面上不允许单条关联操作 ，但是底层数据逻辑可以
        // if (!this.selected_item_pool[0].standard) {
        //   this.selected_item_unstandard_arr = this.selected_item_pool;
        //   this.handle_associate_match();
        // } else {
        //   // 报错
        //   let message = " <div> 当前所选数据已是标准数据</div> ";
        //   this.show_alert_dialog(message);
        // }

          // 报错
          let message = " <div style='margin-top:48px;'> 当前所选数据已是标准数据</div> ";
          this.show_alert_dialog(message);

      } else if (len > 1) {
        this.selected_item_pool.map(x => {
          if (x.standard) {
            this.selected_item_standard_arr.push(x);
          } else {
            this.selected_item_unstandard_arr.push(x);
          }
        });


      }
      let lens = this.selected_item_standard_arr.length;
      let lenuns = this.selected_item_unstandard_arr.length;
        // 单条 BC 数据升级标准 在  不走此流程 
      if (lens == 0 && lenuns > 1) {
        // 无标准数据 多条非标准数据
        this.handle_associate_match();
      } else if (lens == 1 && lenuns > 0) {
        //   一条标准数据+ 一条或者多条非标准数据  则是  常规 关联
        this.handle_associate_match();
      } else if (lens > 1 && lenuns == 0) {
        // 有多个标准数据  无非标准数据  执行合并操作
        this.handle_merge_match();
      } else if (lens > 1 && lenuns > 0) {
        //  有多个标准数据 并且存在 非标准数据
        let message =
          " <div> 请 先进行非标准数据 关联后，再进行标准数据之间的关联操作。</div> ";
        this.show_alert_dialog(message);
      }

    },

    // handle_associate_match( )
    handle_associate_match() {},

    handle_associate_match_onOk() {},
    handle_merge_match() {},
    handle_merge_match_onOk() {},
    handle_reset_selected_item_pool() {
      this.selected_item_pool.map(x => {
        x.is_selected = false;
      });
      this.tabledata.map(x => {
        x.is_selected = false;
      });
      this.show_associate_success=false
      this.selected_item_pool_rebase();
    }
  }
};
